/**
 * @file Condition.cc
 * @brief 条件变量封装类的实现
 */

#include "Condition.hpp"
#include "MutexLock.hpp"
#include <pthread.h>

namespace wd
{

// 构造函数：初始化条件变量
Condition::Condition(MutexLock & m)
: _mutex(m)
{
    pthread_cond_init(&_cond, NULL);
}

// 析构函数：销毁条件变量
Condition::~Condition()
{
    pthread_cond_destroy(&_cond);
}

// 等待条件变量
void Condition::wait()
{
    pthread_cond_wait(&_cond, _mutex.getMutexLockPtr());
}

// 唤醒一个等待线程
void Condition::notify()
{
    pthread_cond_signal(&_cond);
}

// 唤醒所有等待线程
void Condition::notifyAll()
{
    pthread_cond_broadcast(&_cond);
}


}//end of namespace wd
